//package com.ruoyi.coal.common.utils;
//
//import cn.hutool.core.thread.ThreadUtil;
//import io.netty.bootstrap.ServerBootstrap;
//import io.netty.channel.ChannelFuture;
//import io.netty.channel.ChannelHandler;
//import io.netty.channel.ChannelOption;
//import io.netty.channel.EventLoopGroup;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.nio.NioServerSocketChannel;
//import java.net.InetSocketAddress;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//public class NettyServer {
//    private static final Logger log = LoggerFactory.getLogger(com.ruoyi.coal.common.utils.NettyServer.class);
//
//    public static final Integer PORT = Integer.valueOf(5566);
//
//    public void start() {
//        ThreadUtil.execAsync(() -> {
//            com.ruoyi.coal.common.utils.NettyServer server = new com.ruoyi.coal.common.utils.NettyServer();
//            server.startServer();
//        });
//    }
//
//    private void startServer() {
//        NioEventLoopGroup nioEventLoopGroup1 = null, nioEventLoopGroup2 = null;
//        EventLoopGroup bossGroup = null;
//        EventLoopGroup workGroup = null;
//        ChannelFuture future = null;
//        try {
//            nioEventLoopGroup1 = new NioEventLoopGroup();
//            nioEventLoopGroup2 = new NioEventLoopGroup();
//            ServerBootstrap serverBootstrap = new ServerBootstrap();
//            ((ServerBootstrap)((ServerBootstrap)serverBootstrap.group((EventLoopGroup)nioEventLoopGroup1, (EventLoopGroup)nioEventLoopGroup2)
//                    .channel(NioServerSocketChannel.class))
//                    .childHandler((ChannelHandler)new Object(this))
//
//                    .option(ChannelOption.SO_BACKLOG, Integer.valueOf(128))).childOption(ChannelOption.SO_KEEPALIVE, Boolean.valueOf(true));
//            future = serverBootstrap.bind(new InetSocketAddress(PORT.intValue())).sync();
//            log.info("***** TCPPort{} *****", PORT);
//        } catch (Exception e) {
//            log.error("##### TCP Server #####", e);
//        } finally {
//            if (future != null)
//                try {
//                    future.channel().closeFuture().sync();
//                } catch (InterruptedException e) {
//                    log.error("##### channel #####", e);
//                }
//            if (nioEventLoopGroup1 != null)
//                nioEventLoopGroup1.shutdownGracefully();
//            if (nioEventLoopGroup2 != null)
//                nioEventLoopGroup2.shutdownGracefully();
//        }
//    }
//}
//
